﻿#include <iostream>

/**
 * 小Q得到一个神奇的数列：1,12,123,...12345678910,1234567891011...
 * 并且小Q对于能否被3整除这个性质很感兴趣。
 * 小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。
 * 输入描述：
 * 输入包括两个整数l和r(1<=l<=r<=1e9), 表示要求解的区间两端。
 * 输出描述:
 * 输出一个整数，表示区间内能被3整除的数字个数。
 * 示例1:
 * 输入
 * 2 5
 * 输出
 * 3
 *
 * 即
 * 12,123,1234,12345中有几个数字能被3整除?
 *
 *
 * 思路：
 * 判断一个数能否被3整除，等价于一个数的每位之和能否被3整除，反过来也是等价的。
 * 比如123456789101112能否被3整除，可以转化为1+2+3+4+5+6+7+8+9+1+0+1+1+1+2能否被3整除，也可以转化为
 * 1+2+3+4+5+6+7+8+9+10+11+12能否被3整除.
 *
 */
int main_LongNumberCanBeDivisibleByThree()
{
    char input[100] = "2 10";
    int start = 0;
    int end = 0;
    sscanf_s(input, "%d %d", &start, &end);
    int vaildCount = 0;
    for (int i = start; i <= end; i++)
    {
        int total = 0;
        for (int n = 1; n <= i; n++)
        {
            total += n;
        }

        if (total % 3 == 0)
        {
            ++vaildCount;
        }
    }

    printf("%d", vaildCount);

    return 0;
}